1. Field of the Invention
The present invention relates to providing access to and accessing a database and more particularly, providing access to and accessing an attribute based database, such as a catalog, using a hierarchical interface, such as a network file system type interface.
2. Description of the Related Art
In modern computer environments, several computer systems are typically connected together to facilitate the sharing of data and files. The interconnected computers, including the hardware and software used to connect them, are known as a network. A network can include any number of computer systems connected together. This connection can be as simple as wires between two computer systems or can be more elaborate, such as a local area network (LAN), a wide area network (WAN), or the Internet.
Each computer system connected in the network can have a different operating system (“OS”). To communicate, the computer systems use standardized procedure primitives for exchanging data over the network, such as Remote Procedure Calls (“RPCs”). To access the contents of another computer system, the requesting computer system, for example, converts a request into a common RPC protocol, such as the well-known Network File System (“NFS”) protocol developed by Sun Microsystems, Inc. The NFS protocol was designed to allow different operating systems to share files across networks and allow computers to access files over a network as if they were in local memory. The NFS protocol is compatible across different machines, operating systems, network architectures, and transport protocols.
NFS represents data in a file system as a directory tree structure wherein each branch is a directory containing more directories and files. Branches terminate at directories that contain no sub-directories. The directory structure is represented as a string of directory names representing each level followed by a file name. The typical nomenclature used is:    /first_level_directory/second_level_directory/file_A
The directory structure can contain any number of directory levels and any number of files. Files can be found at any level of the directory tree structure. The first level directory is typically known as the “root directory.” NFS is a common file system abstraction which is recognized by many software applications including word processing programs, email utilities, internet applications, and user specific applications.
A software application that requests data is called a client. The computer system or application that provides data to a client is known as a server. A server can be, for example, known as a “file server” or a “database server” if the server controls access to a file system or a database, respectively. A computer system, which includes software applications executable thereby, can be both a client and a server, depending on the current activity, that is, requesting or providing data. The requested data can be local to the computer system or located on a different computer system connected via the network.
When requesting data from a file system, a client will typically search through several directories, beginning at the root directory, searching for a particular file or set of files. This is accomplished using the NFS protocol, for example, when a client issues a “Read From Directory” procedure. The server responds to the client's request using the NFS protocol by returning the directory entries. The directory entries can be files and/or sub-directories. To search further into the directory tree structure, the client issues another “Read From Directory” procedure, identifying a lower level branch to be searched, one directory at a time. The NFS protocol has many distinct procedures available to perform many different functions. Overall, NFS communicates in terms of directories and files. The data is provided as described above in the form of a directory tree. After requesting and receiving the contents of a directory, further requests from the client can begin at that directory level. The client does not need to start from the root directory for each subsequent request. The NFS protocol allows the client to search different levels of the directory tree through the use of file handles, described herein.
When dealing with a large number of files, the files are often organized in a database, such as a catalog, rather than in a directory structure. If the files are organized in a directory structure, all files can be contained in one directory or organized into several directories. If contained in one directory, a NFS request to “Read From Directory” would return a long list of files which the client would have to search in order to find a particular file or set of files. If organized in a directory tree structure, the client may have to search through many different directories before finding the file or set of files needed.
By organizing the files in a database, a client can request files according to file characteristics or attributes. Databases respond to data requests according to attribute values. This provides the maximum flexibility in searching and organizing the information. For example, data for an Internet based product catalog can include a large number of files, including a graphics file, a product description file, and a cost structure file for each product. The files can be organized according to various attributes including manufacturer, color, item size, season, price, type, etc. A client can structure a request specifying any combination of the various attributes to return a particular file or set of files, such as requesting all graphics files associated with a certain manufacturer or only files for the current season of a certain color. By organizing data in a database, a server can provide flexible queries and reports.
To request data from a database, a query indicating the characteristics or attributes of the requested data must be formulated. SQL (Structured Query Language) is a typical database search language. SQL is a set-oriented language consisting of highly flexible commands that can be used to manipulate information collected in tables such as in a database. SQL was created as a language for databases that adhere to the relational model. The relational model calls for a clear separation of the physical aspects of data from their logical representation. The model removes the details of how the data is stored and makes the access to data purely logical. For example, a file is specified by attributes and not physical size or location in a file system. Using SQL statements, the query specifies the tables, columns and row qualifiers to get to any data item. Many vendors offer SQL products on PCs, superminis, and mainframes. SQL has become the dominant database language of mainframes, minicomputers, and LAN servers.
To access a database, a client must formulate and send a query to the server. In a SQL query, data has attributes, called classifiers, which are set to specific values. Using the product catalog example above, for a particular file the classifier SIZE can be set to CHILDRENS, the classifier COLOR can be set to GREEN, the classifier CATEGORY can be set to CHAIR, and the classifier TYPE can be set to GRAPHICS (SIZE=CHILDRENS, COLOR=GREEN, CATEGORY=CHAR, TYPE=GRAPHICS). Database application specific software on a client that understands the database and the various classifiers formulates the SQL query. The server responds with raw data, typically a record set of all opaque data that meets the classifiers set in the SQL query. To further define the request, for example to add the classifier SEASON=FALL, the client must reformulate the entire SQL query. This method of accessing a database requires clients that access the database to have application specific software that enables them to formulate SQL queries. In addition, a client must typically reformulate an entire query to further define a search.
It is difficult to control access to individual files specified by a database differently for each client. Using the product catalog example above, the database owner might want to allow a specific client to access only a certain set of files, for example, those with the classifier VENDOR having a value of COMPANY A. The database owner can desire to grant access to the entire database to another client. This method of granting different access to different clients is difficult to provide. In a file system environment, access rights can be associated with individual files or directories. However, even in the file system environment, it can be difficult to maintain the provision of different access rights to many clients.
A simpler method is needed to provide clients access to the contents of a database. To provide access to a wide variety of clients, requiring each client to have database application specific software to formulate a query is often not practical. In addition, data and file protections should be easily controlled on a client-by-client basis.